﻿using IDAdmin.Lib.DataLayer;
using IDAdmin.Lib.UI;
using IDAdmin.Lib.Utils;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace IDAdmin.Pages
{
    public partial class NauRechard : BasePage
    {
        public NauRechard()
            : base(Lib.AppFunctions.NAURECHARD)
        {
        }
        protected override void Page_Load(object sender, EventArgs e)
        {
            if (!IsLogin())
            {
                RedirectToLogOn();
            }
            else if (!CheckRight())
            {
                RedirectToDeniedMessage();
            }
        }

        protected void ButtonContAndSave_Click(object sender, EventArgs e)
        {
            Panel.Controls.Clear();
            Panel.Controls.Add(getNauRechardTable());
        }

        private Table getFastNauRechard()
        {
            DateTime dtFormDate = IDAdmin.Common.ConverterWorkData.convertStringToDateTime(CountToolBar.beginDateTextBox.Text);
            DateTime dtToDate = IDAdmin.Common.ConverterWorkData.convertStringToDateTime(CountToolBar.toDateTextBox.Text);
            List<DateTime> dateTimeList = IDAdmin.Common.ConverterWorkData.getDateListBetween(dtFormDate, dtToDate);
            NauRechardWebDB nrWebdb = new NauRechardWebDB();
            List<NauRechardDTO> naurList = new List<NauRechardDTO>();
            naurList = nrWebdb.getFastNauRechardData(dtFormDate.ToString("yyyy-MM-dd" + " 00:00:00"), dtToDate.ToString("yyyy-MM-dd" + " 23:59:59")).OrderByDescending(o=>o.ticks).ToList();

            Table table = new Table();
            table.CssClass = "table1";
            table.CellSpacing = 1;
            TableRow rowHeader = new TableRow();
            rowHeader.Cells.AddRange
            (
                new TableCell[]
                {     
                    UIHelpers.CreateTableCell("STT",Unit.Percentage(5), HorizontalAlign.Center,"cellHeader"),
                    UIHelpers.CreateTableCell("Thời gian",Unit.Percentage(5), HorizontalAlign.Center,"cellHeader"),
                    UIHelpers.CreateTableCell("NAU",Unit.Percentage(5), HorizontalAlign.Center,"cellHeader"),
                    UIHelpers.CreateTableCell("Số người nạp thẻ trong ngày này đến 6 ngày tiếp theo",Unit.Percentage(5), HorizontalAlign.Center,"cellHeader"),
                    UIHelpers.CreateTableCell("Số người có nạp thẻ sau 7 ngày đến 14 ngày",Unit.Percentage(5), HorizontalAlign.Center,"cellHeader"),
                    UIHelpers.CreateTableCell("Số người có nạp thẻ sau 14 ngày đến 30 ngày",Unit.Percentage(5), HorizontalAlign.Center,"cellHeader"),
                    UIHelpers.CreateTableCell("Số người có nạp thẻ sau 30 ngày đến 60 ngày",Unit.Percentage(5), HorizontalAlign.Center,"cellHeader"),
                    UIHelpers.CreateTableCell("Tỷ lệ số người nạp thẻ trong ngày này đến 6 ngày tiếp theo",Unit.Percentage(5), HorizontalAlign.Center,"cellHeader"),
                    UIHelpers.CreateTableCell("Tỷ lệ số người có nạp thẻ sau 7 ngày đến 14 ngày",Unit.Percentage(5), HorizontalAlign.Center,"cellHeader"),
                    UIHelpers.CreateTableCell("Tỷ lệ số người có nạp thẻ sau 14 ngày đến 30 ngày",Unit.Percentage(5), HorizontalAlign.Center,"cellHeader"),
                    UIHelpers.CreateTableCell("Tỷ lệ số người có nạp thẻ sau 30 ngày đến 60 ngày",Unit.Percentage(5), HorizontalAlign.Center,"cellHeader")
                }
            );

            table.Rows.Add(rowHeader);
            try
            {
                if (naurList == null || naurList.Count == 0)
                {
                    TableRow rowEmpty = new TableRow();
                    rowEmpty.Cells.Add(UIHelpers.CreateTableCell("<p>Không có dữ liệu!</p>", HorizontalAlign.Center, "cell1", 4));
                    table.Rows.Add(rowEmpty);
                }
                else
                {
                    //labelCountOfUser.Text = string.Format("{0:N0}", dt.Rows.Count);
                    string css;
                    int stt = 0;
                    foreach (var dr in naurList)
                    {
                        stt += 1;
                        css = stt % 2 == 0 ? "cell1" : "cell2";
                        TableRow row = new TableRow();
                        string nrper1 = "";
                        string nrper2 = "";
                        string nrper3 = "";
                        string nrper4 = "";
                        try
                        {
                            nrper1 = ((double.Parse(dr.NauRechard1) * 100) / double.Parse(dr.Nau)).ToString("0.00") + "%";
                        }
                        catch (Exception ex)
                        {

                        }
                        try
                        {
                            nrper2 = ((double.Parse(dr.NauRechard2) * 100) / double.Parse(dr.Nau)).ToString("0.00") + "%";
                        }
                        catch (Exception ex)
                        {

                        }
                        try
                        {
                            nrper3 = ((double.Parse(dr.NauRechard3) * 100) / double.Parse(dr.Nau)).ToString("0.00") + "%";
                        }
                        catch (Exception ex)
                        {

                        }
                        try
                        {
                            nrper4 = ((double.Parse(dr.NauRechard4) * 100) / double.Parse(dr.Nau)).ToString("0.00") + "%";
                        }
                        catch (Exception ex)
                        {

                        }
                        row.Cells.AddRange
                        (
                            new TableCell[]
                           {
                                     UIHelpers.CreateTableCell(stt.ToString(),HorizontalAlign.Center,css),
                                    UIHelpers.CreateTableCell(Converter.ToString(dr.DateTimeStr),HorizontalAlign.Center,css),
                                     UIHelpers.CreateTableCell(Converter.ToString(dr.Nau),HorizontalAlign.Center,css),
                                    UIHelpers.CreateTableCell(Converter.ToString(dr.NauRechard1),HorizontalAlign.Center,css),
                                    UIHelpers.CreateTableCell(Converter.ToString(dr.NauRechard2),HorizontalAlign.Center,css),
                                    UIHelpers.CreateTableCell(Converter.ToString(dr.NauRechard3),HorizontalAlign.Center,css),
                                    UIHelpers.CreateTableCell(Converter.ToString(dr.NauRechard4),HorizontalAlign.Center,css),
                                    UIHelpers.CreateTableCell(nrper1,HorizontalAlign.Center,css),
                                    UIHelpers.CreateTableCell(nrper2,HorizontalAlign.Center,css),
                                    UIHelpers.CreateTableCell(nrper3,HorizontalAlign.Center,css),
                                    UIHelpers.CreateTableCell(nrper4,HorizontalAlign.Center,css)
                        }
                        );

                        table.Rows.Add(row);
                    }
                }
            }
            catch (Exception ex)
            {
            }
            return table;
        }

        private Table getNauRechardTable()
        {

            List<NauRechardDTO> naurList = new List<NauRechardDTO>();

            DateTime dtFormDate = IDAdmin.Common.ConverterWorkData.convertStringToDateTime(CountToolBar.beginDateTextBox.Text);
            DateTime dtToDate = IDAdmin.Common.ConverterWorkData.convertStringToDateTime(CountToolBar.toDateTextBox.Text);
            List<DateTime> dateTimeList = IDAdmin.Common.ConverterWorkData.getDateListBetween(dtFormDate, dtToDate);
            //dateTimeList = dateTimeList.ToList();
            NauRechardWebDB nrWebdb = new NauRechardWebDB();
            foreach (DateTime dt in dateTimeList)
            {
                NauRechardDTO dto = new NauRechardDTO();
                dto.DateTime = dt;
                dto.ticks = dt.Ticks;
                dto.DateTimeStr = dt.ToString("dd/MM/yyyy");
                dto.Nau = nrWebdb.getNau(dt);
                dto.NauRechard1 = nrWebdb.getNauRechard1(dt);
                dto.NauRechard2 = nrWebdb.getNauRechard2(dt);
                dto.NauRechard3 = nrWebdb.getNauRechard3(dt);
                dto.NauRechard4 = nrWebdb.getNauRechard4(dt);
                naurList.Add(dto);
            }
            //naurList=nrWebdb.getStatsData(dateTimeList);
            naurList = naurList.OrderByDescending(o => o.ticks).ToList();
            nrWebdb.insertNauRechard(naurList,dateTimeList);


            Table table = new Table();
            table.CssClass = "table1";
            table.CellSpacing = 1;
            TableRow rowHeader = new TableRow();
            rowHeader.Cells.AddRange
            (
                new TableCell[]
                {     
                    UIHelpers.CreateTableCell("STT",Unit.Percentage(5), HorizontalAlign.Center,"cellHeader"),
                    UIHelpers.CreateTableCell("Thời gian",Unit.Percentage(5), HorizontalAlign.Center,"cellHeader"),
                    UIHelpers.CreateTableCell("NAU",Unit.Percentage(5), HorizontalAlign.Center,"cellHeader"),
                    UIHelpers.CreateTableCell("Số người nạp thẻ trong ngày này đến 6 ngày tiếp theo",Unit.Percentage(5), HorizontalAlign.Center,"cellHeader"),
                    UIHelpers.CreateTableCell("Số người có nạp thẻ sau 7 ngày đến 14 ngày",Unit.Percentage(5), HorizontalAlign.Center,"cellHeader"),
                    UIHelpers.CreateTableCell("Số người có nạp thẻ sau 14 ngày đến 30 ngày",Unit.Percentage(5), HorizontalAlign.Center,"cellHeader"),
                    UIHelpers.CreateTableCell("Số người có nạp thẻ sau 30 ngày đến 60 ngày",Unit.Percentage(5), HorizontalAlign.Center,"cellHeader"),
                    UIHelpers.CreateTableCell("Tỷ lệ số người nạp thẻ trong ngày này đến 6 ngày tiếp theo",Unit.Percentage(5), HorizontalAlign.Center,"cellHeader"),
                    UIHelpers.CreateTableCell("Tỷ lệ số người có nạp thẻ sau 7 ngày đến 14 ngày",Unit.Percentage(5), HorizontalAlign.Center,"cellHeader"),
                    UIHelpers.CreateTableCell("Tỷ lệ số người có nạp thẻ sau 14 ngày đến 30 ngày",Unit.Percentage(5), HorizontalAlign.Center,"cellHeader"),
                    UIHelpers.CreateTableCell("Tỷ lệ số người có nạp thẻ sau 30 ngày đến 60 ngày",Unit.Percentage(5), HorizontalAlign.Center,"cellHeader")
                }
            );

            table.Rows.Add(rowHeader);
            try
            {
                if (naurList == null || naurList.Count == 0)
                {
                    TableRow rowEmpty = new TableRow();
                    rowEmpty.Cells.Add(UIHelpers.CreateTableCell("<p>Không có dữ liệu!</p>", HorizontalAlign.Center, "cell1", 4));
                    table.Rows.Add(rowEmpty);
                }
                else
                {
                    //labelCountOfUser.Text = string.Format("{0:N0}", dt.Rows.Count);
                    string css;
                    int stt = 0;
                    foreach (var dr in naurList)
                    {
                        stt += 1;
                        css = stt % 2 == 0 ? "cell1" : "cell2";
                        TableRow row = new TableRow();
                        string nrper1="";
                        string nrper2="";
                        string nrper3="";
                        string nrper4="";
                        try
                        {
                            nrper1=((double.Parse(dr.NauRechard1)*100)/double.Parse(dr.Nau)).ToString("0.00")+"%";
                        }
                        catch(Exception ex)
                        {

                        }
                         try
                        {
                            nrper2=((double.Parse(dr.NauRechard2)*100)/double.Parse(dr.Nau)).ToString("0.00")+"%";
                        }
                        catch(Exception ex)
                        {

                        }
                         try
                        {
                            nrper3=((double.Parse(dr.NauRechard3)*100)/double.Parse(dr.Nau)).ToString("0.00")+"%";
                        }
                        catch(Exception ex)
                        {

                        }
                         try
                        {
                            nrper4=((double.Parse(dr.NauRechard4)*100)/double.Parse(dr.Nau)).ToString("0.00")+"%";
                        }
                        catch(Exception ex)
                        {

                        }
                        row.Cells.AddRange
                        (
                            new TableCell[]
                           {
                                    UIHelpers.CreateTableCell(stt.ToString(),HorizontalAlign.Center,css),
                                    UIHelpers.CreateTableCell(Converter.ToString(dr.DateTimeStr),HorizontalAlign.Center,css),
                                     UIHelpers.CreateTableCell(Converter.ToString(dr.Nau),HorizontalAlign.Center,css),
                                    UIHelpers.CreateTableCell(Converter.ToString(dr.NauRechard1),HorizontalAlign.Center,css),
                                    UIHelpers.CreateTableCell(Converter.ToString(dr.NauRechard2),HorizontalAlign.Center,css),
                                    UIHelpers.CreateTableCell(Converter.ToString(dr.NauRechard3),HorizontalAlign.Center,css),
                                    UIHelpers.CreateTableCell(Converter.ToString(dr.NauRechard4),HorizontalAlign.Center,css),
                                    UIHelpers.CreateTableCell(nrper1,HorizontalAlign.Center,css),
                                    UIHelpers.CreateTableCell(nrper2,HorizontalAlign.Center,css),
                                    UIHelpers.CreateTableCell(nrper3,HorizontalAlign.Center,css),
                                    UIHelpers.CreateTableCell(nrper4,HorizontalAlign.Center,css)
                        }
                        );

                        table.Rows.Add(row);
                    }
                }
            }
            catch (Exception ex)
            {
            }
            return table;
        }

        protected void ButtonCount_Click(object sender, EventArgs e)
        {
            Panel.Controls.Clear();
            Panel.Controls.Add(getFastNauRechard());
        }
    }
}